package com.yangfan.thread.thread_wangwenjun03;


/**
 * @description: 线程通信练习题1
 * @author: yangfan
 * @date: Created in 2020/1/26 0026 20:39
 * @modified By:
 *
 */


public class TheadCommunicate1 {

    //Java多线程通信 练习题：写两个线程，其中一个线程打印1-52，另一个打印A-Z，打印顺序为12A34B56C....5152Z


    private boolean flag = false;//控制是否打印

    /**
     * 基础思路：打印两次数字 在打印 一次 字母
     */

    public synchronized void print1To52() throws InterruptedException {

        for(int i = 1; i<= 26;){

            if(flag){ //如果他是true的话 说明已经打印了

                wait();

            }else{

                System.out.println(i*2-1);
                System.out.println(i*2);

                i++;

                flag = true;//开关设置为 打开 因为他已经 执行过了

                notifyAll();
            }

        }


    }


    public synchronized void printAToZ() throws InterruptedException {

        for (char i ='A'; i <= 'Z';){


            if(!flag){ //如果他是true的话 说明已经打印了

                wait();

            }else{

                System.out.println(i);

                i++;

                flag = false;//开关设置为 打开 因为他已经 执行过了

                notifyAll();

            }


        }



    }





    public static void main(String[] args) {


        TheadCommunicate1 t = new TheadCommunicate1();

        new Thread(){
            @Override
            public void run() {
                try {
                    t.print1To52();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }.start();



        new Thread(){
            @Override
            public void run() {
                try {
                    t.printAToZ();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }.start();


    }



}
